package com.thread.Lambda;
/*现过程：1、一个接口；2、一个实现类
默认是testLambda的标准方式一步一步实现
test2：二、静态方式
test3：三、局部方式
 */

public class lambda {

    static class TestLambda2 implements Ilike{ //用静态接口方式实现
        @Override
        public void lambda() {
            System.out.println("test lambda2");
        }
    }
    public static void main(String[] args) {
        Ilike testLambda = new TestLambda();//new一个接口对象的实现类
        testLambda.lambda();//调用对象实现类的方法

        Ilike test2 =new TestLambda2(); //二、静态方法实现
        test2.lambda();





         class TestLambda3 implements Ilike{ //用局部内部类接口方式实现
            @Override
            public void lambda() {
                System.out.println("test lambda3");
            }
        }
        Ilike test3 = new TestLambda3(); //三、局部内部类实现
         test3.lambda();



         //四、匿名内部类，没有类名，需要借助接口或父类实现
        Ilike test4 = new Ilike(){
            @Override
            public void lambda() {
                System.out.println("test lambda4");
            }
        };//需要分号，是因为这是一个语句
        test4.lambda();
//五、用lambda简化
        Ilike test5 = ()->{
            System.out.println("test lambda5");
        };
        test5.lambda();
    }
}



//1、定义一个函数式接口：只有一个方法的接口，叫函数式接口
interface Ilike{
    void lambda();//1.1定义一个方法
}
//2、实现接口
class TestLambda implements Ilike{
    @Override
    public void lambda() {
        System.out.println("test lambda");
    }
}

